home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / FAUG / FAUG05.ADF / milestonegame.bas < prev    next >
BASIC Source File  |  1992-01-03  |  14KB  |  191 lines

  1. 10    ' ************************************
  2. 12    ' **                                **
  3. 13    ' **           MILE STONE           **
  4. 14    ' **           ----------           **
  5. 15    ' **        AMIGA VERSION BY        **
  6. 16    ' **         David  Addison         **
  7. 17    ' **                                **
  8. 18    ' **            C   1986            **
  9. 19    ' **                                **
  10. 20    ' ************************************
  11. 21    ' ************************************
  12. 75    clr:SCREEN 0,5:graphic 1:drawmode 1
  13. 80    DIM picture%(11000),regsave%(100),mplay%(200),mdiscard%(200),mblank%(200) 
  14. 85    bload "milestone_pic",VARPTR(picture%(0))
  15. 87    bload "milestone_dat",VARPTR(regsave%(0)):bload "milestone-P",VARPTR(mplay%(0))
  16. 89    bload "milestone-D",VARPTR(mdiscard%(0))
  17. 90    GOSUB 10000
  18. 93    gshape (0,0),picture%():sshape (65,12;85,20),mblank%()
  19. 110   e=106:red=19:yellow=26:green=8:brown=30:dblue=28:mblue=8:purp=21
  20. 115   bk0=2:bk1=8:bk2=10:bk3=13:bk4=14:bk5=29
  21. 120   DIM s(7),c(e),t$(20),pl(1,3),h(1,7),t1(4),t2(4,5),tb(1),qq(1),safety(1,5),sinewave%(11)
  22. 140   DATA OUT OF GAS,FLAT TIRE,ACCIDENT,SPEED LIMIT(50),STOP
  23. 150   DATA GAS,SPARE TIRE,REPAIRS,END SPEED LIMIT,ROLL
  24. 160   DATA EXTRA TANK,PERMANENT TIRE,DRIVING ACE,R,RIGHT-OF-WAY
  25. 170   DATA 200,100,75,50,25
  26. 180   nm$="HAZARD    REMEDY    SAFETY    DISTANCE  "
  27. 185   bl$="               ":bl0$="                                 "
  28. 187   FOR n=1 TO 20
  29. 190   READ t$(n)
  30. 195   NEXT n
  31. 200   DATA 18,56,60,106,4,7,10,14,19,25,31,37,43,57,58,59,60,60,61,65,77,87,97,107
  32. 210   FOR i=1 TO 4:READ t1(i):NEXT i
  33. 220   FOR i=1 TO 4:FOR j=1 TO 5
  34. 230   READ t2(i,j):NEXT j:NEXT i
  35. 235   data 100,90,60,100,90,60,-100,-90,-60,-100,-90,-60
  36. 236   for kk%=0 to 11:read sinewave%(kk%):next kk%:audio 15,1:wave 6,sinewave%
  37. 240   g=0:FOR i=1 TO e:c(i)=i:NEXT i:s(0)=0:s(1)=0:play=1
  38. 250   graphic 1:pena dblue:penb bk0:PRINT  at(2*8,6); "SHUFFLING...":GOSUB 740:GOSUB 820:sleep(100000)
  39. 260   FOR i=0 TO 1:FOR j=0 TO 3:pl(i,j)=0:NEXT j:tb(i)=10:qq(i)=6:NEXT i
  40. 265   FOR i=0 TO 1:FOR j=1 TO 5:safety(i,j)=0:NEXT j:NEXT i
  41. 270   FOR i=0 TO 1:FOR j=1 TO 6
  42. 280   cn=cn+1:h(i,j)=c(cn):NEXT j:NEXT i
  43. 290   LOCATE (0,6+4*8):pena brown:penb bk1
  44. 300   FOR a=1 TO 6:c=h(1,a):GOSUB 780:PRINT AT(2*8,6+(3+a)*8);n$:NEXT a
  45. 310   p=1:cn=cn+1:IF cn>e THEN s=s+1:IF s>6 THEN n$="NOBODY":GOTO 1740
  46. 320   IF s>0 THEN 360
  47. 325   pena purp:penb bk5:locate(270,75):print using "###";106-cn
  48. 330   c=c(cn):h(1,0)=c:GOSUB 780:pena brown:penb bk1
  49. 340   PRINT  at(2*8,6+3*8);bl$
  50. 350   PRINT  at (2*8,6+3*8);n$
  51. 360   pena mblue:penb bk0:PRINT at(1*8,6),bl0$:PRINT  at (2*8,6); "YOUR MOVE":flag=0 
  52. 370   GOSUB 9000:pena brown:penb bk1
  53. 380   GOSUB 5000:storey%=4+s
  54. 385   ask MOUSE x%,y%,b%
  55. 390   IF y%<6 OR y%>19 OR x%<0 OR x%>163 THEN 385
  56. 395   IF y%>11 AND y%<20 AND x%>5 AND x%<50 AND b%=4 THEN gshape (65,12),mplay%():play=1:GOTO 402
  57. 400   IF y%>11 AND y%<20 AND x%>100 AND x%<164 AND b%=4 THEN gshape (65,12),mdiscard%():play=0:GOTO 402
  58. 402   if b%<>4 then 385
  59. 403   ask mouse x%,y%,b%:if b%<>0 then 403
  60. 405   cur%=INT(y%/8):IF cur%<3+s OR cur%>9 THEN 411
  61. 407   IF cur%<>storey% and s<>6 THEN c=h(1,storey%-3):GOSUB 780:PRINT at(8*2,6+(storey%)*8);n$;
  62. 409   IF cur%<>storey% or s=6 THEN c=h(1,cur%-3):GOSUB 780:PRINT at(8*2,6+(cur%)*8);inverse(1) n$;:storey%=cur% 
  63. 411   ask MOUSE x%,y%,b%
  64. 412   IF y%<6 OR y%>80 OR x%<0 OR x%>163 THEN 411
  65. 414   IF b%=4 THEN 418
  66. 416   GOTO 405
  67. 418   n=cur%-3
  68. 419   print at(8*2,6+(storey%)*8);n$;
  69. 420   gshape (65,12),mblank%()
  70. 422   if n<s or n>6 then 360
  71. 430   IF play=0 THEN GOSUB 920:GOSUB 900:GOTO 460
  72. 440   GOSUB 880
  73. 450   IF ch=0 THEN penb bk0:pena red:PRINT  ",OK ";
  74. 451   if ch=0 then ask mouse x%,y%,b%:if b%=0 then 451
  75. 452   if ch=0 then ask mouse x%,y%,b%:if b%=4 then 452 else goto 360
  76. 460   penb bk1:PRINT at(2*8,6+(3+s)*8);bl$
  77. 470   IF pl(1,0)=1000 THEN n$="YOU":GOTO 1740
  78. 480   d$="PLAY"
  79. 490   pena dblue:penb bk0:PRINT at(1*8,6),bl0$
  80. 500   PRINT  at (2*8,6); "THINKING....":p=0:cn=cn+1:flag=0:sleep(50000)
  81. 510   GOSUB 8000
  82. 520   IF s=0 THEN h(0,0)=c(cn):pena purp:penb bk5:locate(270,75):print using "###";106-cn
  83. 530   hz=pl(0,2):IF hz>-1 AND pl(0,1)>-1 THEN 600
  84. 540   GOSUB 1470:IF cf THEN safety(0,m)=1:pl(0,cf)=m:s(2)=s(2)+300
  85. 550   IF cf THEN s(4)=s(4)+100:GOTO 720
  86. 560   IF s OR pl(1,0)>790 OR pl(0,0)>790 THEN GOSUB 1680:IF sf THEN 720
  87. 570   GOSUB 1430:IF ch THEN pl(0,ch)=m:GOTO 720
  88. 580   IF pl(0,2)>-1 THEN 600
  89. 590   GOTO 680
  90. 600   IF pl(0,2)<5 THEN 670
  91. 610   lm=201:IF pl(0,1)<0 THEN lm=51
  92. 620   IF lm<200 AND pl(0,0)<900 THEN GOSUB 1400:IF ch THEN pl(0,1)=4:GOTO 720
  93. 630   ch=0:d=0:FOR a=s TO 6:c=h(0,a):GOSUB 780:b=VAL(n$):IF b=0 THEN 650
  94. 640   IF b<lm AND (b+pl(0,0)<1001) AND b>d THEN d=b:n=a:ch=1
  95. 650   NEXT a:IF ch THEN pl(0,0)=pl(0,0)+d:GOTO 720
  96. 660   GOTO 680
  97. 670   GOSUB 1530:IF ch AND (pl(0,2)>-1) THEN pl(0,2)=5:GOTO 720
  98. 680   IF pl(1,2)<0 AND pl(1,1)<0 THEN 710
  99. 690   GOSUB 1330:IF ch=1 AND pl(1,0)<950 THEN pl(1,1)=-4:GOTO 720
  100. 700   IF ch=2 AND pl(1,2)=5 THEN pl(1,2)=-m:GOTO 720
  101. 710   GOSUB 1550
  102. 720   GOSUB 1800:IF pl(0,0)=1000 THEN n$="I":GOTO 1740
  103. 730   GOSUB 2100:GOTO 310
  104. 740   cn=0:en=e+1:s=0:randomize -1
  105. 750   FOR i=2 TO 5:s(i)=0:NEXT i
  106. 760   FOR i=1 TO e:r=INT(i+(en-i)*RND(8)):t=c(i):c(i)=c(r):c(r)=t
  107. 770   NEXT i:RETURN
  108. 780   FOR i=1 TO 4:FOR j=1 TO 5
  109. 790   IF c>t1(i) THEN j=5:GOTO 810
  110. 800   IF c<t2(i,j) THEN start=((i-1)*5+1)+((j-1)):n$=t$(start):k=i:l=j:i=4:j=5
  111. 810   NEXT j:NEXT i:RETURN
  112. 820   REM
  113. 870   RETURN
  114. 880   c=h(1,n):GOSUB 780:GOSUB 960:p=1
  115. 890   IF ch=0 THEN pena dblue:penb bk0:print at(1*8,6);bl0$:PRINT at(2*8,6);ms$;:RETURN
  116. 900   GOSUB 950:j=n+5+6*(1-p):pena brown:penb bk1:GOSUB 2090:PRINT bl$
  117. 905   IF n=0 THEN c=h(p,n):GOSUB 780:RETURN
  118. 910   pena brown:penb bk1:ask cursor hor%,vert%:c=h(p,n):GOSUB 780:PRINT  at(2*8,(vert%-8));n$:RETURN
  119. 920   c=h(p,n):GOSUB 780
  120. 930   pena dblue:penb bk2:PRINT at(22*8,3+6*8);"               ":GOSUB 6000
  121. 935   ln=29-Int(len(n$)/2):? at(ln*8,3+6*8);n$
  122. 940   LOCATE (0,6):RETURN
  123. 950   h(p,n)=h(p,s):RETURN
  124. 960   p=1:ms$="":ON k GOTO 1040,1120,1240,970
  125. 970   d=VAL(n$):IF pl(1,0)+d>1000 THEN ms$="YOU HAVE EXCEEDED 1000"
  126. 980   IF pl(1,1)=-4 AND d>50 THEN start=((1-1)*5+1)+((4-1)):ms$="YOU HAVE A "+t$(start)
  127. 990   IF pl(1,2)<5 THEN ms$="YOU DON'T HAVE A ROLL CARD"
  128. 1000  IF pl(1,2)<0 THEN ms$="YOU HAVE A HAZARD"
  129. 1010  IF ms$<>"" THEN ch=0:RETURN
  130. 1020  pl(1,0)=pl(1,0)+d:ch=1:pena 3:penb bk3
  131. 1030  n$=STR$(pl(1,0)):LOCATE(33*8,6+11*8):PRINT USING "####";pl(1,0):ch=1:gosub 4000:RETURN
  132. 1040  IF l<>4 AND pl(0,2)<5 THEN ms$="I DON'T HAVE A ROLL CARD"
  133. 1050  IF l<>4 AND pl(0,2)<0 THEN ms$="I ALREADY HAVE A HAZARD"
  134. 1060  IF l=4 AND pl(0,1)<0 THEN ms$="I HAVE A SPEED LIMIT"
  135. 1070  IF l=4 AND safety(0,5)=1 THEN start=((3-1)*5+1)+((5-1)):ms$="I HAVE "+t$(start)
  136. 1080  IF safety(0,l)=1 THEN ms$="HA!-I HAVE THE SAFETY"
  137. 1090  IF ms$<>"" THEN ch=0:RETURN
  138. 1100  I         ⁿ<<<<<<<               <<               <<               <<               <<               <<               <<               <<               <<               <<               <<               <<<<<<<?               ⁿ?               ⁿ?               ⁿÇα≡                      ■      └ <╟Ö ü            ■     └ <ôÖÖ ÖτƒÖ            ■     └ Ö9ÖÖ Öτƒƒ            ■     └ ├9Öâ âτƒç            ■     └ τ9Öô ƒτ¥ƒ            ■     └ τôÖÖ ƒτÖÖ            ■     └ ├╟┴ ü            ■     └■             ■      └■                           └■                           └■                           └■                           └■                           └■                           └■                           └■                            └■                           └■                           └■                           └■                           └■                           └■                           └■                           └■                            └■                           └■                           └■                           └■                           └■                           └■                           └■                           └■                            └       ⁿ                           └   ü    ⁿ                           └   └                           └   α                           └   ≡                           └   °                           └        ⁿ                           └        ⁿ                            └                                     └                                     α                                     °                                     ⁿ                                     ⁿ                                     ⁿ                                     ⁿ≡<≡é├ⁿ~≡■<≡╞├f`f<≡εff``<≡■<|`x<≡╓`b`<≡╞`ff<≡╞<≡~■■<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<≡<                                     ⁿ                                     ⁿ                                     ⁿ ╠33fx 330<■3 > x0 33<╠3 33f?                                     ⁿ                                     ⁿ                                     ⁿ                                     ⁿ                                     ⁿ                                     ⁿ                                     ⁿ                                     ⁿ 0<                   ⁿ?               └αaⁿτƒ       â└ßß≤üâⁿ?               └α!°gƒ       ü└└└ßÇüⁿ?               └≤3°c       ╚≤─îß╠╚ⁿ?               └≡3≤0?       ╠≤├ƒ╠└╠ⁿ?               └≡s░8       ╠≤≡ƒ└┴╠ⁿ?               └≤≤         ╚≤╚îÇH╚ⁿ?               └00
  139. 1980  IF s(7)=1000 THEN ? at(29,5);" ";:? using "####";val("400"):s(7)=s(7)+400
  140. 1990  PRINT  "COUP FOURRES":? at(19,6);" ";:? using "####";s(2):? at(29,6);" ";:? using "####";s(3)
  141. 2000  s(6)=s(6)+s(2):s(7)=s(7)+s(3)
  142. 2010  PRINT  "SAFETIES":? at(19,7);" ";:? using "####";s(4):? at(29,7);" ";:? using "####";s(5)
  143. 2020  s(6)=s(6)+s(4):s(7)=s(7)+s(5)
  144. 2030  PRINT  "SHUT OUT":IF pl(1,0)=0 THEN ? at(19,8);" ";:? using "####";val("500"):s(6)=s(6)+500
  145. 2040  IF pl(0,0)=0 THEN ? at(29,8);" ";:? using "####";val("500"):s(7)=s(7)+500
  146. 2050  PRINT :PRINT  "ROUND ";g;" TOTAL":? at(18,10);" ";:? using "#####";s(6):? at(28,10);" ";:? using "#####";s(7)
  147. 2060  s(0)=s(0)+s(6):s(1)=s(1)+s(7)
  148. 2070  PRINT :PRINT  "GRAND TOTAL":? at(18,12);" ";:? using "#####";s(0):? at(28,12);" ";:? using "#####";s(1)
  149. 2080  RETURN
  150. 2090  LOCATE(0,6):LOCATE(2*8,6+(j-2)*8)
  151. 2091  IF j<12 OR (j=13 OR j=16 OR j=17) OR (j=19 OR j=22 OR j=23) THEN 2095
  152. 2092  PRINT  at(11*8,6+(j-2)*8);bl$:LOCATE(2*8,6+(j-2)*8)
  153. 2095  IF j>12 THEN GOSUB 6000
  154. 2096  ask cursor horz%,vert%:RETURN
  155. 2100  FOR t=1 TO 200:NEXT t:RETURN
  156. 2840  RETURN
  157. 4000  for kk%=1 to int(d/10)
  158. 4010  cx%=sound(1,1,3,65,int(rnd*700)+700):cx%=sound(2,1,3,65,int(rnd*1000)+1000)
  159. 4015  sleep(30000)
  160. 4020  next kk%
  161. 4030  return
  162. 5000  return
  163. 6000  randomize -1
  164. 6010  note1%=(rnd(8)*1000)+100:note2%=note1%+100
  165. 6020  cx%=sound(1,1,100,65,note1%):sleep(10000):cx%=sound(2,1,100,65,note2%)
  166. 6040  return
  167. 7000  for jj%=1 to 4
  168. 7005  for kk%=5000 to 100 step -300
  169. 7010  cx%=sound(1,1,50,65,kk%):cx%=sound(2,1,50,65,kk%)
  170. 7015  sleep(10000)
  171. 7020  next kk%
  172. 7025  next jj%
  173. 7030  return
  174. 8000  IF safety(1,5)=1 AND pl(1,2)>-1 THEN pl(1,2)=5:j=15:pena mblue:penb bk3:PRINT  at(11*8,6+(j-2)*8);"ROLL           "
  175. 8010  RETURN
  176. 9000  IF safety(0,5)=1 AND pl(0,2)>-1 THEN pl(0,2)=5:j=21:pena mblue:penb bk4:PRINT  at(11*8,6+(j-2)*8);"ROLL           "
  177. 9010  RETURN
  178. 10000 cnt=0
  179. 10010 FOR i%=0 TO 31:rgb i%,regsave%(cnt),regsave%(cnt+1),regsave%(cnt+2):cnt=cnt+3:NEXT i%
  180. 10020 RETURN
  181. 11000 for t=1 to 30
  182. 11005 ask rgb 4,r%,g%,b%
  183. 11010 for i%=31 to 4 step -1
  184. 11020 ask rgb i%,r1%,g1%,b1%
  185. 11030 rgb i%,r%,g%,b%
  186. 11040 r%=r1%:g%=g1%:b%=b1%
  187. 11050 sleep(100)
  188. 11060 next i%
  189. 11070 next t
  190. 11080 gosub 10000:return
  191.